<?php
include("./API.php");
include("../config.php");
tongji("bdyy");
$msg=$_GET["msg"];//文本内容
$per=$_GET["per"]?:19;//发音人
$hh=$_GET["hh"]?:"\n";//换行符号(默认\n)
if($per>19){echo "".$web["ming"]."API百度语音合成".$hh."━━━━━━━━━".$hh."音库选项无此范围，仅可选1~19".$hh."━━━━━━━━━".$hh."Tips:".$web["ming"]."API技术支持";exit();}
$ys=array(1=>1,2=>0,3=>3,4=>4,5=>5003,6=>5118,7=>106,8=>110,9=>111,10=>103,11=>5,12=>4003,13=>4106,14=>4115,15=>4119,16=>4105,17=>4117,18=>4110,19=>4103);
$spd=$_GET["spd"]?:5;//语速，取值0-15，默认为5中语速
$pit=$_GET["pit"]?:5;//音调，取值0-15，默认为5中语调
$vol=$_GET["vol"]?:5;//音量，取值0-15，默认为5中音量（取值为0时为音量最小值，并非为无声）
$post= array(
    'type'          => 'tns',
    'per'           =>$ys[$per],//发音人
    'spd'           => $spd,//语速
    'pit'           =>$pit,//音调
    'vol'           =>$vol,//音量
    'tex'           =>$msg,//文本内容
    'aue'           =>6,
);
$data=json_decode(curl("https://ai.baidu.com/aidemo",$post),true);
// print_r($data);
// echo $data;
/**/
$mp3 =$data['data'];
$mp3Name=time().'.mp3';//定义mp3文件名
if (strstr($mp3, ",")) {
    $mp3 = explode(',', $mp3);
    $mp3 = $mp3[1];
}
$path = "./data/tts";

if (!is_dir($path)) { //判断目录是否存在 不存在就创建
    mkdir($path, 0777, true);
}
$qipaMp3Src=$path."/".$mp3Name; //mp3音频文件名字
$r = file_put_contents($qipaMp3Src, base64_decode($mp3));//返回的是字节数
if (!$r) {
    echo "".$web["ming"]."API百度语音合成".$hh."━━━━━━━━━".$hh."mp3音频文件生成失败".$hh."━━━━━━━━━".$hh."Tips:".$web["ming"]."API技术支持";
} else {
//执行输出
$folder="./data/tts";//要删除文件夹的目录
trash($path,86400);//调用删除1天前的文件
$mulu=str_replace("./", "/", $path);
$filename="http://".$_SERVER['HTTP_HOST']."/api/data/".$mulu."/".$mp3Name;//mp3文件链接
    header('Content-Type: audio/mpeg');
    header('Content-Disposition: filename="test.mp3"');
    header('Content-length: '.filesize($filename));
    header('Cache-Control: no-cache');
    header("Content-Transfer-Encoding: chunked"); 
    readfile($filename);
    // echo $filename;
}

//获取毫秒的时间戳
function getMillisecond(){
    $time = explode ( " ", microtime () );
    $time = $time[1] . ($time[0] * 1000);
    $time2 = explode( ".", $time );
    $time = $time2[0];
    return $time;
}

/*
删除文件夹
PHP删除n天以前的文件,删除指定目录下指定类型(扩展名)的文件,包括子目录子和目录下的文件.
其中$ext数组代表不删除的文件扩展名.
调用函数trash('目录名',时间值);如trash('./files',3600)
参数时间值的单位是秒,如果省略不写,使用trash('./'),将删除当前时间30秒前及更早的文件.
*/
function trash($folder,$time=30){
$ext=array('php','htm','html'); //带有这些扩展名的文件不会被删除.
$o=opendir($folder);
while($file=readdir($o)){
        if($file !='.' && $file !='..' && !in_array(substr($file,strrpos($file,'.')+1),$ext)){
                $fullPath=$folder.'/'.$file;
                if(is_dir($fullPath)){
                        trash($fullPath);
                        @rmdir($fullPath);
                } else {
                        if(time()-filemtime($fullPath) > $time){
                                unlink($fullPath);
                                }
                        }
                }
        }
        closedir($o);
}

?>